草庐IT

Ruby File 类和方法

全部标签

mysql - 如何测试mysql的insert方法

我正在Go中设置测试。我使用go-sqlmock来测试mysql连接。现在我尝试测试mysqlinsert逻辑。但是出现错误。我想知道如何解决这个错误。serverside:golangdb:mysqlwebframework:gindao.gofuncPostDao(db*sql.DB,articleutil.Article,uustring){ins,err:=db.Prepare("INSERTINTOarticles(uuid,title,content)VALUES(?,?,?)")iferr!=nil{log.Fatal(err)}ins.Exec(uu,article.T

go - 将接口(interface)指针片转换为结构指针片的最有效方法是哪种?

这个问题已经有了答案:Typeconvertingslicesofinterfaces5答最基本的问题是我得到了一个[]*interface{},我需要把它转换成[]*MyStruct。我在尝试这样的方法,但速度不快。在我的例子中,在示例代码中,lines片段包含映射,因此硬转换不起作用。varlines[]*interface{}varresults[]*MyStructfor_,s:=rangelines{ifs!=nil{someJson,err:=json.Marshal(s)iferr!=nil{continue}v:=MyStruct{}iferr:=json.Unmars

pointers - X不实现Y(…方法具有指针接收器)

关于“x不实现y(…方法有一个指针接收器)“事情,但对我来说,他们似乎在谈论不同的事情,而不适用于我的具体情况。所以,我不是把这个问题说得很具体,而是把它说得宽泛而抽象--似乎有几种不同的情况会导致这个错误发生,有人能总结一下吗?也就是说,如何避免这个问题,如果它发生了,有什么可能性?谢谢。 最佳答案 当您试图将具体类型分配或传递(或转换)给接口类型时,会出现此编译时错误;而该类型本身并没有实现接口,只是指向该类型的指针。让我们看一个例子:typeStringerinterface{String()string}typeMyType

go - 导出的方法在同一个包中不可用

我有一个小的golang项目,在main.go文件中有一些处理程序引用session.go文件中的session相关方法。两者在文件顶部都有packagemain。session.go文件中的函数都以大写字母开头(即它们是公共(public)/导出方法)。然而,当我运行main.go文件时,它说位于session.go中并从main.go调用的方法是未定义。为什么会这样,如何解决。我正在运行项目gorunmain.go主.gofunclogout(whttp.ResponseWriter,r*http.Request){ClearSession(w,r)....}session.gof

struct - 在将它作为接口(interface)传递并运行它的方法后,让你将结构恢复为它的数据类型?

我有一个结构如下typeMyStruct{EmbeddedFooBar}func(m*MyStruct)Foo(b*http.Request){//Doingsomething}funcfn(args...interfaces){//It'shereIwanttogetmystructbackandrunthe"Get"method//PleasekeepinmindIamtoopassapointerparamintothestructmethodstrt:=args[0]....getstructbacktostaticdatatypeMyStructandrun"Get()",d

go - 如何在 Go main 方法中重定向 URL?

我在Go中设置了一个GorrilaMux,如果在浏览器中输入特定的URL,它将进行API调用。如果URL作为命令行参数给出,我想在我的主要方法中进行相同的API调用。然而,似乎能够做到这一点的http.redirect()方法需要一个HTTPResponseWriter和一个*HTTPRequest变量作为函数参数。我不知道如何在main方法中生成这些变量。我该怎么做,或者是否有更好的方法从Golang中的URL调用API?设置路由器的代码funcmain(){router:=mux.NewRouter().StrictSlash(true)for_,route:=rangeroute

go - 如何在 Go 方法中调用/打开 URL?

我在Go中设置了一个GorillaMux路由器。我在该路由器中设置了路由,以及与这些路由关联的函数处理程序。如果您打开浏览器窗口并输入特定的URL,路由器将完美运行。但是,我遇到的问题是,如果在命令行中输入了URL,该怎么办。我知道如何从命令行参数存储URL,但我不知道如何将存储为URL变量的URL转发到路由器。比如,如果URL是在命令行上给出的,而不是通过浏览器窗口输入的,那么你如何调用路由的函数处理程序?代码:u,err:=url.Parse(os.Args[1])iferr!=nil{fmt.Println(err.Error())}host,port,_:=net.SplitH

go - 编写优先级队列时如何向用户隐藏堆方法?

我正在关注thiscode实现优先级队列。我不喜欢的是,当在main方法中使用它时,用户必须调用heap.Push和heap.Pop。让我的优先级队列包含一个堆,而不是将它包装在一个堆中,对我来说更有意义。我是不是想错了,或者示例代码是否显示了在Golang中执行此操作的正确方法? 最佳答案 我创建了一个调用heap.Push和heap.Pop的包装器类。packagehuffmanimport"container/heap"typeRunePriorityQueuestruct{queuePriorityQueue}func(Ru

http - TCP 是同一主机中 Go 程序之间通信的最佳方法吗?

假设我有两个独立的Go程序在我的本地主机上运行,​​就性能而言,TCP是否是在两个程序之间传输数据的最佳方法? 最佳答案 简短的回答是否定的。TCP/IP堆栈很慢,尤其是TCP部分。因此,就性能而言,您最好使用本地进程间通信方法,例如应用程序或Unix套接字之间的共享内存。如果您必须使用网络堆栈进行通信(例如,您计划在主机之间移动应用程序),那么UDP或原始套接字是性能方面的最佳选择。只有当你:必须使用网络并且您需要一个可靠的通信channel,那么TCP是一个不错的选择。因此,只需浏览您的要求并确定它是否是最适合您的方法。

go - 如何在go中调用未导出类的方法

我想在net/http/server.go中调用http.Server的newConn方法func(srv*Server)newConn(rwcnet.Conn)*conn{c:=&conn{server:srv,rwc:rwc,}ifdebugServerConnections{c.rwc=newLoggingConn("server",c.rwc)}returnc}尝试使用反射访问但发生错误conn:=...server:=&http.Server{}inputs:=make([]reflect.Value,1)inputs[0]=reflect.ValueOf(conn)c:=r